FFmpeg 第三方库的引入——以opus为例

FFmpeg 第三方库的引入——以opus为例

FFmpeg支持第三方的编解码库,本文记录了第三方库的引入方法,以opus为例。

步骤

  1. 首先查看当前已安装的ffmpeg是否支持 opus,如果已经支持,就啥都不用改啦。
    ffmpeg -codecs | grep opus
    
  2. 如果当前ffmpeg不支持,查看 FFmpeg 源码是否支持 opus,如果支持的话,重新编译FFmpeg即可。进入 ffmpeg 源码目录,执行:
    ./configure --list-encoders | grep opus
    
  3. 如果本地的FFmpeg中不包含opus库,需要安装 opus 库:
    FFmpeg 如果需要使用第三方库,需要先安装,再配置 ffmpeg,在配置、编译时依赖该库。下载 libopus 源码,并执行./configure, make, make install 三步曲,libopus 就安装成功了。
  4. 配置 ffmpeg 库,开启 libopus:在 ffmpeg 源码目录,执行./configure 时,增加参数:--enable-libopus --enable-encoder=libopus
    1. libopus 就是./configure --list-encoders 时看到的那个名字。
    2. --enable-libopus 表明生成 ffmpeg 时,使用 libopus 库。
    3. --enable-encoder 表明开启名字为'libopus'的编码器。
    4. 然后 make, make install 就能更新 ffmpeg 支持 libopus 了。重新执行./configure --list-encoders | grep opus
      可以看见 encoders 和 decoders 后面都增加了 libopus。现在就可以用新的 libopus 进行非 48K 的编码了。
  5. 如果 ffmpeg 库还要发给别人呢:如果确定 ffmpeg 的功能不需要改,把 ffmpeg 和第三方库的头文件,库文件从/usr/local/下找出来发过去就 OK。不过,万一哪天别人需要加个 h264 呢。别人高高兴兴的编了个带 h264 的版本替换进去(他不知道现在有 opus 啊,说不定还有别的什么这个那个库)。完蛋!不知道过了多久,终于有人发现音频功能出问题了。所以./configure 的参数也应该放到版本里。别人加 h264 的时候,就在这个参数上进行添加。改完一编译,又完蛋。因为 opus 库安装在我们本地,还记得吗?别人电脑上没有呀。我们把 opus 库的 include 和 lib 放到版本库下,再在 ffmpeg 的./configure 参数里,指定第三方库的目录。指定方法如下:
    1. --extra-cflags=" -I 库路径/include " --extra-cxxflags=" -I 库路径/include"
    2. --extra-ldflags="-L 库路径/lib"
    3. 并指定 ffmpeg 的安装目录,指定方法如下:--prefix=ffmpeg版本库里的安装目录
      这样就能愉快的使用配置了第三方库的 ffmpeg 了。

FFmpeg 第三方库的引入——以opus为例